package com.csw.demojson.controller.fastjson;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.List;
import java.util.Map;

public class FastJsonDemo {
    public static void main(String[] args) {

        // 总结
        // map对象,list对象,或实体对象转JSONString //JSON.toJSONString(对象)
        // JSONString转map //JSON.parseObject(JSONString, Map.class)
        // JSONString转实体对象 //JSON.parseObject(JSONString, 对象.class)
        // JSONString转list<实体对象> //JSON.parseArray(JSONString, 对象.class),
        // //当里面是Object的时候还是用JSON.parseObject(JSON.toJSONString(o1), (Type)
        // Object.class)
        // map转对象或者是对象转map先转换成JSONString，再按照上面方法转
        // 扩展
        // JSONArray和JSONObject先转换成JSONString，再按照上面方法转，记住JSONString是中转

        /**
         * JSON操作
         */
        // map对象,list对象,或实体对象转JSONString
        String json = JSON.toJSONString(new Object());


        //json字符串转map对象");
        Map map = JSON.parseObject(json, Map.class);
        //【map转json字符串】" + JSON.toJSONString(map));


        //json字符串转对象");
        Object o = JSON.parseObject(json, Object.class);
        //【对象转json字符串】" + JSON.toJSONString(person));


        //json字符串转list");
        List<Object> personList = JSON.parseArray(json, Object.class);
        //【list转json字符串】" + JSON.toJSONString(personList));


        //map转对象");
        Object o1 = JSON.parseObject(JSON.toJSONString(map), Object.class);
        //对象转map");
        Map map1 = JSON.parseObject(JSON.toJSONString(o1), Map.class);


        /**
         * JSONObject操作
         */
        //JSONObject操作-从中取值
        String jsonString = "";
        JSONObject object = JSONObject.parseObject(jsonString);
        //取单个字段
        String str1 = object.getString("str1");
        //取对象
        JSONObject jsonObject = object.getJSONObject("data");
        //object中取数组
        JSONArray jsonArray = jsonObject.getJSONArray("arr");
        //jsonArray遍历，里面的每个对象再强转成JSONObject
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject object1 = jsonArray.getJSONObject(i);
            //里面再获取所需要的单个对象
            String str2 = object1.getString("str2");
        }


        //JSONObject操作-封装成JSONObject
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("aa", "11");
        jsonObject1.put("bb", "22");

        JSONObject object1 = JSON.parseObject("json字符串");
        JSONArray array = object1.getJSONArray("arrKey");
        for (int i = 0; i < array.size(); i++) {
            JSONObject js= array.getJSONObject(i);
            String username = js.get("aa") == null ? "" : js.getString("aa");
        }

    }

}
